import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:  数据库插入数据
 * User: LXW
 * Date: 2022-03-17
 * Time: 8:58
 */
public class TestJDBC {
    public static void main(String[] args) throws SQLException {
        DataSource dataSource =  new MysqlDataSource();
        //1. 创建数据源

        // 设置数据源地址
        ((MysqlDataSource) dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java102?characterEncoding=utf8&useSSL=false");
        // 设置数据源用户名
        ((MysqlDataSource) dataSource).setUser("root");
        // 设置数据源密码
        ((MysqlDataSource) dataSource).setPassword("111111");

        // 2.进行数据库的连接(让代码和数据库服务器进行一个连接）

        Connection connection = dataSource.getConnection();

        // 3.控制台输入指定的列
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入第一个id");
        int id = scanner.nextInt();
        System.out.println("请输入第一个name");
        String name = scanner.nextLine();

        // 4.写一个SQL语句
        // 操作数据库. 以插入数据为例.
        //        //    关键所在就是构造一个 SQL 语句~
        //        //    在 JDBC 中构造的 SQL, 不必带上 ;
        //        //    ; 只是在命令行中用来区分不同的语句. 现在是直接在代码中操作~~
        String sql = "insert into student values (?,?)";
        //此处光是一个 String 类型的 sql 还不行, 需要把这个 String 包装成一个 "语句对象"
        PreparedStatement statement = connection.prepareStatement(sql);
        // 进行替换操作
        statement.setInt(1,id);
        statement.setString(2,name);
        System.out.println("statement: "+ statement);  // 打印拼接好的sql语句
        // 5.执行数据库
        int ret = statement.executeUpdate();
        System.out.println(ret);

        // 5.关闭资源   此时 SQL 已经执行完毕. 然后还需要释放资源.
        statement.close();
        connection.close();
    }
}
